Amazon SNSをColdFusion10とAWS SDK for javaの組み合わせで操作する #1 | CreateTopic & subscribe
今回はColdFusionを使って実際にAmazon SNSを使ってみたいと思います。機能としては簡単に言うとプッシュ通知をおこなってくれるサービスです。通知先としてHTTP/HTTPS、EMail、Amazon SMSとAmazon SQSの4種類がありましたが、Mobile Pushもサポートされ、AndoroidやiPhone等のモバイル端末にもプッシュ通知ができるようになりました。モバイル端末に対する記事はAndroidへのMobile Push記事やiPhoneへのMobile Push記事でご確認ください。
動作させた環境
- Windows7 64Bit
- ColdFusion10 デベロッパー版
- AWS SDK for java 1.5.3
Amazon SNSを使う
- トピックを作成するAPIをコールします(作成名称は tsukumaTOPIC で作成します。)
- Topic ARN を取得します。
- Topic ARN,Protocol,EndPointを設定します。
- 購読するためのAPIをコールします
利用したサンプルテンプレートは以下のものです( aws_sns_createtopic.cfm )
<cfcontent type="text/html; charset=utf-8"> <cfprocessingdirective pageEncoding="utf-8" suppressWhitespace="true"> <cflock scope = "Session" timeout = "30" type = "Exclusive"> <cfset aws_AK = #accessKeyId#> <!--- Your Access Key ---> <cfset aws_SK = #secretAccessKey#> <!--- Your Secret Key ---> </cflock> <cfoutput> <html lang="ja"> <head> <meta charset="utf-8"> <title>Coldfusion + AWS SDK for java SNS CreateTopic and subscribe Sample</title> </head> <body> <cfset awscreds = createObject("java","com.amazonaws.auth.BasicAWSCredentials").init(aws_AK,aws_SK)> <cfset SNSClient = createObject("java","com.amazonaws.services.sns.AmazonSNSClient").init(awscreds)> <!--- RegionをEUに指定 ---> <cfset sns_region = SNSClient.setEndPoint("https://sns.eu-west-1.amazonaws.com/")> <!--- 初期化 ---> <cfset SNSCreateTopicRequest = createObject("java","com.amazonaws.services.sns.model.CreateTopicRequest").init()> <cfset snstest = SNSCreateTopicRequest.setName("tsukumaTOPIC")> <cfset sns_result = SNSClient.createTopic(SNSCreateTopicRequest)> <cfset topic_arn = #sns_result.getTopicArn()#> <cfset SNSsubscribeRequest = createObject("java","com.amazonaws.services.sns.model.SubscribeRequest").init()> <cfset snstest = SNSsubscribeRequest.setTopicArn(topic_arn)> <!--- 通知先をemailで設定する場合 ---> <cfset snstest = SQSsubscribeRequest.setProtocol("email")> <cfset snstest = SQSsubscribeRequest.setEndpoint("プッシュ通知したいメールアドレスを指定")> <cfset snstest = SNSClient.subscribe(SNSsubscribeRequest)> <!--- 確認用にAmazon Resource Name(ARN)を表示させる ---> <cfdump var="#sns_result.getTopicArn()#"><br> </cfoutput> </cfprocessingdirective> <cfsetting enablecfoutputonly="false"> </body> </html>
まずManagement Consoleにログインしてトピックが作成されているかを確認します。
トピックは正しく作成できていることが確認できました。しかし、Subscription IDの部分がまだ PendingConfirmation になっています。subscribeすると通知先がEMailの場合、その通知先に下記のようなメールがAmazonから来ますので、メール文中の Confirm subscription をクリックして購読を確定させます。
Confirm subscription をクリックと下記のように確認画面が表示されます。
再度 Management Console に戻って確認してみると Subscription ID が設定されていることが確認できます。
これでsubscribe(購読)までの準備ができましたので、次回はトピックをpublishして指定したEMailアドレスにプッシュ通知が来る事を確認したいと思います。